---
title: PDFiumExt_Init
description: Initialize the PDFium extension library with proper configurations
searchable: true
---

# PDFiumExt_Init

`PDFiumExt_Init()`

## Description

Initializes the PDFium extension library with the proper configurations for operating in a WebAssembly environment. This function must be called after initializing the WebAssembly module but before performing any PDF operations.

The PDFium extension library provides additional functionality and optimizations for the WebAssembly version of PDFium. Calling this function sets up essential components like memory allocators, error handling, rendering subsystems, and font handling.

## Prerequisites

This is a core initialization function that must be called after loading the PDFium WebAssembly module. For more details on the initialization process, see our [Getting Started](/docs/pdfium/getting-started#initializing-pdfium) guide.

## Parameters

This function does not take any parameters.

## Return Value

This function does not return a value.

## Example

```typescript
// This example shows how to properly initialize PDFium
import { init, WrappedPdfiumModule } from '@embedpdf/pdfium';

// Create a singleton for PDFium instance
let pdfiumInstance: WrappedPdfiumModule | null = null;

async function initializePdfium() {
  // If already initialized, return the existing instance
  if (pdfiumInstance) return pdfiumInstance;
  
  // Load and initialize the WebAssembly module
  const pdfiumWasm = 'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium/dist/pdfium.wasm';
  const response = await fetch(pdfiumWasm);
  const wasmBinary = await response.arrayBuffer();
  pdfiumInstance = await init({ wasmBinary });
  
  // Initialize the PDFium extension library
  // This MUST be called before any PDF operations
  pdfiumInstance.PDFiumExt_Init();
  
  console.log('PDFium initialized successfully');
  return pdfiumInstance;
}

// Usage
async function workWithPdf() {
  try {
    const pdfium = await initializePdfium();
    
    // Now you can start working with PDFs...
    console.log('Ready to work with PDFs!');
    
    // Load a document, render pages, etc.
  } catch (error) {
    console.error('Failed to initialize PDFium:', error);
  }
}

workWithPdf();
```

## When to Call PDFiumExt_Init

This function should be called:

1. **Once, after initialization**: Call this function once after successfully initializing the WebAssembly module with `init()`.

2. **Before any PDF operations**: Always call this function before attempting to load documents, render pages, or perform any other PDF-related operations.

3. **In your initialization routine**: Ideally, include this call in your initialization function that creates and returns the PDFium instance.

## What PDFiumExt_Init Does

The `PDFiumExt_Init` function performs several critical setup tasks:

1. **Memory allocation setup**: Configures the memory allocators for PDFium's internal operations.

2. **Font system initialization**: Sets up the font handling system, allowing PDFs with various fonts to render correctly.

3. **Rendering subsystems**: Prepares the various rendering components for proper operation.

4. **Error handling configuration**: Establishes proper error handling mechanisms.

## Best Practices

1. **Call it once**: Call `PDFiumExt_Init` only once per application session, typically right after initializing the WebAssembly module.

2. **Create an initialization helper**: Encapsulate the initialization logic (including `PDFiumExt_Init`) in a helper function that returns the initialized PDFium instance.

3. **Implement as a singleton**: Use a singleton pattern for your PDFium instance to ensure `PDFiumExt_Init` is only called once, as shown in the example.

4. **Check for errors**: While `PDFiumExt_Init` doesn't return a value, subsequent PDF operations might fail if initialization wasn't successful. Use try/catch blocks around your PDFium operations to detect any issues.

## Common Issues

1. **Forgotten initialization**: The most common issue is simply forgetting to call `PDFiumExt_Init`, which can lead to crashes or strange behavior when attempting PDF operations.

2. **Multiple initialization calls**: Calling `PDFiumExt_Init` multiple times is unnecessary and may potentially cause problems.

3. **Calling before WebAssembly is ready**: Ensure that the WebAssembly module initialization (`init()`) has completed successfully before calling `PDFiumExt_Init`.

## Related Functions

- [FPDF_LoadMemDocument](/docs/pdfium/functions/FPDF_LoadMemDocument) - Load a PDF document from memory
- [FPDF_GetPageCount](/docs/pdfium/functions/FPDF_GetPageCount) - Get the number of pages in a document
- [FPDF_LoadPage](/docs/pdfium/functions/FPDF_LoadPage) - Load a specific page from a document